知识点名称:加速度传感器
编号: K12-6
前驱知识点编号:K12-1,K12-2
作者:
讲义内容:
加速度传感器使用的是图12.1显示的坐标轴系统,加速度传感器获得原始数据包括x,y,z三个轴方向的加速度,其中包含了重力加速度,这个值大约是9.81
$$m/s^2$$ 。
下面利用加速度传感器来模仿微信摇一摇的功能。程序的主要逻辑非常简单,只需要检测手机在X轴、Y轴、Z轴上的加速度,当达到了预定值(任意一个轴上的加速度大于等于15$$m/s^2$$)就可以认为用户摇动了手机,从而触发摇一摇的逻辑。
首先创建一个AccelermeterSensorTest的工程,然后修改MainActivity中的代码,如下所示:
```public class MainActivity extends Activity {
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager
.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(listener, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (sensorManager != null) {
sensorManager.unregisterListener(listener);
}
}
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// 加速度可能会是负值,所以要取它们的绝对值
float xValue = Math.abs(event.values[0]);
float yValue = Math.abs(event.values[1]);
float zValue = Math.abs(event.values[2]);
if (xValue > 15 || yValue > 15 || zValue > 15) {
// 认为用户摇动了手机,触发摇一摇逻辑
Toast.makeText(MainActivity.this, "摇一摇", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
} ```
当你摇动你的手机,就会看到Toast提示出来了。